Clase 28.07ΒΆ
- Parametro es lo que no podemos modificar, se guarda en en el aprendizaje y se actualiza mientras mas aprende
- Hiperparametro si lo podemos modificar , es una variable que toma por sentada una parte de su entrenamiento y la usa para entrenar.
Hiperparametros de nuestra redΒΆ
- Ctantidad de NeuronaS
- Cantidad de capas
- Learning rate es Es un hiperparΓ‘metro que controla cuΓ‘nto se ajustan los pesos de la red en cada iteraciΓ³n.
- Funcion activacion
- Batchsize
- epocas
Nosotros lo que queremos hacer es tenemos un objetivo , es hacer que la red aprenda, y que encuentre el proceso de nuestra data. El problema son los recursos entonces tenemos un batch que tiene un subjconjunto del set original, y cada vez que te pase n observaciones actuliza los datos. Osea que por cada chunck calculo la perdida antes de hacer backpropagation. Si yo le pongo batchsize de 1 , se va a memorizar los datos y entonces va a overfittear
Las epocas es darle varias vueltas a todo el conjunto de datos, 1 vuelta de todo el conjunto de dato se llama epoca. entrenar solo 2-3 Γ©pocas en un problema complejo es muy malo lo ideal es hacerlo mas grande
Entrenamienton y Prueba y ValidacionΒΆ
La validacion y el test la diferencia es una diferencia metodologica. El train ajusta los hiperparametros. Durante nuestra experimentacion de ver las metricas y hacer nuevas iteraciones del modelo son sobre la validacion.
La idea del test es que nunca lo haya visto, osea que sean nuevos. Para eso sirve el validation, para que la correccion sea sobre este ultimo
Formas de Elegir HiperparametrosΒΆ
Grid SearchΒΆ
$n = (0.1,0.001, 0.0001)$ $f(z) = (sig, tanh , relu)$
Y de estas se combinan para formar un tuneo del parametro
El problema es que pesa mucho, crece exponencialmente, cada una de las combinaciones es un nuevo modelo. Es bien exacto ya que prueba todas las posibles combinaciones
Random SearchΒΆ
Probamos de manera aleatoria, y de esas elige n combinaciones, pero el problema es que solamente funciona si el muestreo es suficietemente grande.
El problema es que se queda en minimos locales, no explora para encontrar mas combinaciones que mejoren el modelo.
Bayessian OptimizationΒΆ
Bayes me dice que
$$P(A|B) = \frac{P(B|A) * P(A)}{P(B)}$$
Voy a variar un poco esa configuracion, si mejoro dice que en esa direccion me voy a mover. La idea es que en lugar que me voy a elegir combinaciones posibles.
Si converges en varios distintos quiere decir que por ahi va tu verdadero minimo.
RegularizaciΓ³nΒΆ
La idea es penalizar los pesos para que el modelo no se vuelva demasiado complejo (evitar overfitting).
La funciΓ³n de pΓ©rdida queda asΓ (ejemplo con Ridge):
$$ MSE = \frac{1}{n} \sum_{i=1}^{n}(y_i - \hat{y_i})^2 + \lambda \sum_j w_j^2 $$
- Primer tΓ©rmino: error cuadrΓ‘tico medio (MSE).
- Segundo tΓ©rmino: penalizaciΓ³n de los pesos (regularizaciΓ³n).
- $\lambda$: hiperparΓ‘metro que controla cuΓ‘nto penalizamos.
TiposΒΆ
Ridge (L2): penaliza la suma de los cuadrados de los pesos.
$$ \lambda \sum_j w_j^2 $$
Lasso (L1): penaliza la suma de los valores absolutos de los pesos.
$$ \lambda \sum_j |w_j| $$
πΉ Con esto, el modelo reduce la magnitud de los pesos y evita que alguno tenga demasiada influencia. πΉ Lasso incluso puede volver algunos pesos exactamente cero β selecciona variables.
RIDGE no puede llevar a valores a 0 en cambio a LASSO si los lleva y mata neurona el hijo de perra
import numpy as np
import matplotlib.pyplot as plt
# Simulamos Γ©pocas
epochs = np.arange(1, 51)
# Simulamos pΓ©rdida (loss)
loss_train = np.exp(-epochs/10) + 0.05*np.random.rand(len(epochs))
loss_val = np.exp(-epochs/10) + 0.1*np.random.rand(len(epochs))
# Forzamos overfitting: validaciΓ³n empieza a subir en Γ©poca 25
loss_val[25:] += (np.arange(len(epochs)-25)) * 0.05
# Simulamos accuracy
acc_train = 1 - loss_train + 0.05*np.random.rand(len(epochs))
acc_val = 1 - loss_val + 0.05*np.random.rand(len(epochs))
# Graficamos
plt.figure(figsize=(12,5))
# Loss
plt.subplot(1,2,1)
plt.plot(epochs, loss_train, label='Loss Entrenamiento')
plt.plot(epochs, loss_val, label='Loss ValidaciΓ³n', linestyle='--')
plt.axvline(25, color='r', linestyle=':', label='Inicio overfitting')
plt.xlabel('Γpocas')
plt.ylabel('Loss')
plt.title('FunciΓ³n de PΓ©rdida')
plt.legend()
# Accuracy
plt.subplot(1,2,2)
plt.plot(epochs, acc_train, label='Accuracy Entrenamiento')
plt.plot(epochs, acc_val, label='Accuracy ValidaciΓ³n', linestyle='--')
plt.axvline(25, color='r', linestyle=':', label='Inicio overfitting')
plt.xlabel('Γpocas')
plt.ylabel('Accuracy')
plt.title('Accuracy')
plt.legend()
plt.tight_layout()
plt.show()
En el earling stoping lo que hacemos es hacer el corte en la epoca donde la perdida es minima
DropoutΒΆ
Es donde la neurona la matamos, en donde lo hacemos para no depender de una neurona en especifico, y asi evitar el overfitting. Este es un hiperparametro que le podemos definir con probabildiad
CLASE 04.08ΒΆ
OptimizadoresΒΆ
Claro, aquΓ tienes una explicaciΓ³n clara y bien estructurada sobre el Gradiente Descendente Simple, su funcionamiento, problemas, y por quΓ© se usan optimizadores mΓ‘s avanzados hoy en dΓa, incluyendo una menciΓ³n al problema del gradiente desvanecido (vanishing gradient):
π Gradiente Descendente SimpleΒΆ
ΒΏQuΓ© es?ΒΆ
El gradiente descendente es un algoritmo de optimizaciΓ³n que busca minimizar una funciΓ³n de pΓ©rdida (por ejemplo, el error de predicciΓ³n) ajustando los parΓ‘metros del modelo (como los pesos en una red neuronal).
ΒΏCΓ³mo funciona?ΒΆ
En cada paso:
$$ \theta_{t+1} = \theta_t - \eta \cdot \nabla_\theta J(\theta) $$
Donde:
- $\theta$: parΓ‘metros del modelo (pesos).
- $\eta$: tasa de aprendizaje (learning rate).
- $\nabla_\theta J(\theta)$: gradiente de la funciΓ³n de pΓ©rdida.
El modelo ajusta sus parΓ‘metros en la direcciΓ³n contraria al gradiente, buscando el mΓnimo.
ΒΏDΓ³nde converge?ΒΆ
- Si la tasa de aprendizaje es adecuada, el algoritmo puede converger hacia un mΓnimo local o global.
- En funciones convexas, converge al mΓnimo global.
- En redes neuronales (no convexas), puede quedarse en mΓnimos locales o sillas (saddle points).
π§± Problemas del Gradiente Descendente SimpleΒΆ
Sensibilidad a la tasa de aprendizaje:
- Si es muy grande β puede divergir (explota).
- Si es muy pequeΓ±a β converge muy lento o se estanca.
Oscilaciones o estancamiento:
- Puede oscilar en valles estrechos o quedarse "atrapado".
No se adapta al paisaje del error:
- Misma tasa de aprendizaje para todos los parΓ‘metros β ineficiente.
Problemas en redes profundas:
- AquΓ entra el problema clave: el gradiente desvanecido.
π«οΈ Vanishing Gradient Problem (Problema del Gradiente Desvanecido)ΒΆ
- En redes profundas, al retropropagar el error (backpropagation), los gradientes pueden volverse muy pequeΓ±os en las capas iniciales.
- Esto hace que los pesos de las primeras capas no se actualicen adecuadamente, y por tanto, la red no aprenda bien.
- Ocurre especialmente con funciones de activaciΓ³n como sigmoid o tanh.
Β‘Claro, Mathew! AquΓ tienes una descripciΓ³n sencilla y clara de cada optimizador, con su propΓ³sito y caracterΓsticas principales:
βοΈ Optimizadores mΓ‘s usados en Deep LearningΒΆ
1. SGD (Stochastic Gradient Descent)ΒΆ
DescripciΓ³n: Es el optimizador mΓ‘s bΓ‘sico. Actualiza los pesos del modelo usando el gradiente del error calculado en un mini-lote (batch) de datos. Ventaja: Simple y rΓ‘pido en problemas pequeΓ±os. Desventaja: Puede ser lento para converger y quedarse atrapado en mΓnimos locales.
2. SGD con MomentumΒΆ
DescripciΓ³n: Mejora a SGD aΓ±adiendo una βinerciaβ al movimiento de los pesos. AsΓ, si el gradiente sigue apuntando en la misma direcciΓ³n, el optimizador va ganando velocidad. Ventaja: Acelera la convergencia y reduce oscilaciones. Desventaja: TodavΓa necesita ajustar bien el learning rate.
3. AdagradΒΆ
DescripciΓ³n: Adapta automΓ‘ticamente la tasa de aprendizaje para cada parΓ‘metro segΓΊn cuΓ‘ntas veces se actualizΓ³. ParΓ‘metros que se actualizan mucho, reducen su paso. Ventaja: Bueno para datos escasos (por ejemplo, NLP). Desventaja: El learning rate puede volverse tan pequeΓ±o que el modelo deja de aprender.
4. RMSPropΒΆ
DescripciΓ³n: Corrige el problema de Adagrad usando una media mΓ³vil de los gradientes pasados. Mantiene una tasa de aprendizaje razonable a lo largo del tiempo. Ventaja: Muy ΓΊtil en redes recurrentes (RNNs). Desventaja: Puede requerir ajuste fino de hiperparΓ‘metros.
5. Adam (Adaptive Moment Estimation)ΒΆ
DescripciΓ³n:
Es uno de los optimizadores mΓ‘s usados. Combina la idea de momentum (velocidad) con la adaptaciΓ³n del learning rate (como RMSProp).
Ventaja: RΓ‘pido, estable y funciona bien en la mayorΓa de los casos.
Desventaja: Puede no generalizar tan bien si no se ajusta el learning rate.
6. AdamWΒΆ
DescripciΓ³n: Es una mejora de Adam que maneja mejor la regularizaciΓ³n (weight decay), especialmente ΓΊtil en modelos grandes como Transformers. Ventaja: Mejor generalizaciΓ³n y resultados mΓ‘s estables. Desventaja: Requiere mΓ‘s memoria que SGD.
7. Nadam (Nesterov-accelerated Adam)ΒΆ
DescripciΓ³n: Es una versiΓ³n de Adam que aΓ±ade la aceleraciΓ³n de Nesterov, anticipando el prΓ³ximo paso. Ventaja: Puede acelerar el aprendizaje en algunos problemas. Desventaja: No siempre mejora respecto a Adam.
CLASE 18082025ΒΆ
Redes Convulusionales.ΒΆ
La red anterior lo que piensa es que cada pixel es independiente, pero el humano no interperta asi , sigue los patrones de seΓ±as, coloroes, formas que al unirlas conforman la imagen de la idea.
Lo que hacen las CNN es reducir a una imagen mas sencilla de entender lo que ve.
Para lo que estas hechas es para tener datos de local y espacial. Que tienen un contexto y que sus variables tienen dirferentes valores en otros datos.
Las redes captan una matriz y a a esa patriz le dan sentido en forma de patrones.
Nuestra reed es la misma red que venimos trabajando anteriormente, la red proprocesa los datos de manera releavante, le pode un MLP comun y calcula por filtros.
En el pipeline, de las capas de convulucion haecen que pierda informacion. Pero vamos a mantener la informacion mas importnate.
PoolingΒΆ
Tiene un kernel que tiene una cantidad asignada en la matriz. A los numeros del kernel se le aplica una operacion , ya sea maxpoling que es calcular el maximo. La finalidad de las capas de pooling es reducir la info Lo que decidimos es si tener una capa de max o average. Estos son hiperparametros, cuidado ya que pueden hacer que pierdas informacion Esto sirve si queres reducir la cantidad de pxeles a analizar en una capa
En las redes reales , tenemos mas info , porque tenemos un canal rojo, azul y verde Y debemos de encontrar variaciones entre todos los canales.
Capa de DropoutΒΆ
El problema es que al aplicar los filtros genero mas imagenes de la original. Lo que hace el dropout evita el sobreajuste tirando aleatoriamente n % que tu eligas
Convertir la matrizΒΆ
Convertimos la matriz a un vector
Red NeuronalΒΆ
Luego aplicamos una red neuronal tipica. Softmax lo que hac es ponderar el numero entre las multiples variables que den 1 explicitamente para saber si va a ser un tipo de clasificacion o no .
Si se hace esto 1 de las variables sera la respuesta ya que softmax obliga a que se tome la mas alta
Una cosa interesante es que las CNN tienen menos parametros que una red normal.
ResumenΒΆ
Redes convolucionales (CNN):
Buscan patrones cada vez mΓ‘s bΓ‘sicos. Por ejemplo de una cara humana, la descompone en ojos, cara, boca, etc y cada parte de la cara la descompone en otras partes etc.
Naturaleza local especial: tienen un contexto y alreadedor hay informaciΓ³n de otras variables que me dan contexto de ese valor.
ConvoluciΓ³n: operaciΓ³n de matriz. Tenemos un kernel (una matriz) hacemos una combinaciΓ³n lineal con los valores de otra matriz para resumirlo todo en un solo valor.
Nos pueden ayudar a encontrar los bordes de un objeto, los bordes indican cuando las cosas son y dejan de ser.
La red calcula los valores ideales de los kernel.
Pooling: informaciΓ³n que resume la informaciΓ³n de una regiΓ³n reduciendo su tamaΓ±o lo que ayuda a reducir la complejidad del modelo y lo hace mΓ‘s robusto a pequeΓ±as variaciones o traslaciones en los datos.
Aplicamos n filtros(es un hiperparΓ‘metro) este encuentra patrones, luego aplica pooling y volvemos a aplicar convoluciΓ³n con los filtros, cada vez podemnos ir encontrando patrones mΓ‘s complejos.
Softmax: pondera todos los valores y elige el mΓ‘s alto.
ReSUMEN 2 Clase 1908ΒΆ
Si preguntan porque tanto resumen es que me quede dormido en la clase. xdΒΆ
mlp parte mas sencillas de redes neuronales
ahora veremos redes convolucionales cnn
recordando la clase pasada teniamos 10 clases con 284 variables de entrada,
784 variables? porque porque cada pixel es independiente de los demas
nosotros entendemos imagenes por trazos por contexto donde variables se representan, como local espacial, cada pixel y esta sentado tiene sentido que los de alrededor tenga sentido para encontrar patrones interesantes
problema de independencia, ejemplo altura de personas las variabels son dependientes para hacer inferencia final peroen imagenes se represetan diferentes una de otra
esta informaciΓ³n si tengo "a" pero escrita en diferente tipografia, nosotros no entendemos por pixel esta dibujado entonces es una "a" porque lo hacemos por trazaos.
incluso si son por las partes debemos reconocer si es un ojo por la forma por textura por la posicion y como sabemos que es un ojo y si hay nariz labios, etc y dentro de un circulo entonces es una cara y si tiene otras caracteristicas entonces es una mujer, debemos extender esto hasta arriba para entender una raiz
las redes neuronales buscan patrones cada vez mΓ‘s basicos como figuras texturas, etc esto lleva a un contexto mucho mΓ‘s grande y complejo para poder solucionarlo
para entender algo en el mundo sabemos que es algo cuando hay ausencia, es decir sabemos que hay una montaΓ±a porque hay cielo, es decir limites que defines cosas de otras para convertir en otra cosa.
laboratorio redes convolucionales, sencilla la idea:
esta redes es para naturaleza local espacial es que tienen un contexto y al rededor al mismo tiempo dan contexto de mi propio valor, es diferente a series de tiempo
existen capas de convoluciones y pooling, ess decir es la red que hace es mlp procesar la informacion con patrones relevantes conectando mlp comun para terminar un trabajo:
tenemos un kernel o nucleo y me da una ponderacion de que tan importante es mi alrededor y esto dice que se da una ponderacion por ejemplo *5 y en la esquina de 0 arriba +1 abajo -1 etc y sumo todas las casillas al rededor y ese filtro es colocarlo en una esquina y esos los resumo en un solo valor, un solo pixel y mover hasta abajo 1 pixel para hacer otro proceso.
tengo
100 97 96 103 101 102 404 102 100 y la matriz:
0 -1 0 -1 5 -100 -1 01
y al hacer la combinacion lineal de 9 casillas en un solo numero:
505-97-103-102-102=101 son kernels pequeΓ±os
tenemos por ejemplo:
negro:0 - blanco:255
pensando en el escenario:
255 255 255 255 0 0 0 0 255
las convolucion nos ayuda a encontrar bordes o ecnontrar cuando algo esta dejando de ser como el trazo en los 4 bloques de arriba o el bloque solo de la esquina abajo pero entonces si aplico:
y aese filtro se le aplica:
-1 0 1 -1 0 1 -1 0 1
cuando las columnas de los lados son diferentes se hace 0
pero sse harΓ‘ en el valor original y hace que 2 columnas sean distintos y es como un limite es decir una linea vertcial si los 2 son distintos y dibujo el patrΓ³n negro encontre una linea vertical
0 al rededir y 1 al medio que hace este patron? esto no hace nada porque ahora otro por ejemplo todos unos:
esto suma todos los 9 pixeles en una sola posiciΓ³n, que pasa si estoy en una seccion clara? se exponencia lo blanco si estoy en la oscura no pasa nada son bajos los tonos, entonces lo que hace es aumentar el brillo o contraste,
ahora si el valor de todos los 9 pixeles seran 1/9 esto es un promedio y esto lleva a una version mas central de los colores haciendo un blur se verΓ‘ borroso, estos son los pesos de la red, le pasamos a la red cuantos filtros y la red determinarΓ‘ que patron le servirΓ‘ esto para determinar que filtros usar.
un filtro:
1 1 1 0 0 0 -1 -1 -1
que harΓ‘? invertirΓ‘ los pixeles y lo que harΓ‘ es omitir las lineas verticales, dejarΓ‘ las horizontales, porque? y las diagonales? estas tienen una componente horizontal
ya que encuentra otros patrones y no se borra del todo,
porque mientras mas filtros mas complejo?
ventajas de la red neuronal:
sabiendo overfittiear:
meansky dijo que redes de una sola capa solo puede escalar patrones lineales y con muchas capas encontramos no lineal +volviendo a convoluciones tenemos una capa con ciertos pixeles en el medio y esto nos tira a un solo numero y en las egunda capa:
porque las capas se ponen sobre otra, entonces las primeras encuentran puntos, patrones, la otra capa algo de 27*27 y asi original, es decir encuentra cosas exponencialmente con trazos cada vez mΓ‘s grandes
los filtros buscan la red y ver que ayudan para encontrar patrones importantes
entonces:
creamos una red pero en lugar de tener 10 neuronas se tienen 10 filtros 3310 = 90 parametros entonces esto calcula los 10 parametros para ajustar
al ajustar el filtro en la esquina y se calcula el centro , los valores de la esquina superior y izquierda se pierden porque los pixeles se ueren, normalmente a las imagenes se le colocan un paggind y el filtro es 5x5, los pixeles siguen disminuyendo, perdemos informaciΓ³n:
es malo porque ademas tenemos un limite para que mantener la informacion mΓ‘s importante en lugar de recibir 728 variables puedo recibir info igual imporatne de 4*4 = 16 variables de entrada
cantidad de filtros es un hiperparametro
pooling operacion que resume la informaciΓ³n de una regiΓ³n reduciendo su tamaΓ±o, lo que ayuda a disminuir complejidad del modelo, y hace mas robusto pequeΓ±as varaiaciones o traslaciones en los datos obteiene le promedio o maximo, esto es para reducir cantidad de informaciΓ³n pero maxAverage pooling o averagePoolling, es hiperparametros para decidir que me importa es decor una funcion de max o average es como una funcion de activacion y saber que tipo de pooling
esto debemos de tomarlo en cuenta porque el pooling se hace que disminuya informaciΓ³n y de tal forma hacerlo para no hacerlo para quedarnos sin informaciΓ³n sobre capa
ojo en las imagenes blanco y negro, es mas simple pero tenemos mΓ‘s canales en la realidad por rgb y tonalidad, entonces debemos encontrar variaciones en todos los canales ojo cuando parar? con max pooling si se redujo 4 veces la info? si aun se entiende entonces no fue relevantes
la ultima capa es una capa parecido a droppout
tenemos imagen blanco y negro -> 10 filtros ahora 10 imagenes luego pooling, luego le saco 20 filtros y luego pooling iugual pero mas pequeΓ±as, es decir 20 imagenes mas pequeΓ±as de la original, genero demasiada informacion de una sola imagen, el dropout bota el 25% de la info para no evitar sobreajuste sobre cada observacion y termina siendo el 25% de todos los datos, por ultimo hacemos flatten es matriz a vector, y sacamos una capa de 10 de 10 simbolos que tenian
otra cosa:
tengo 10 variables de salida:
si tenemos una sigmoide y un 1 parecido a 7 que van a activar de manera diferente las clases de 0 - 9:
0.1 0.9 0.2 0.15 0.4 0.1 0.15 0.8 0.05 0.3
suma 1? no debe de sumar 1? no bueno el solve de pytorch lo que hace es que hace que todo sume 1 cual valor tendrΓ‘ valor mas alto? el del 1 entonces es 1 pero tambien se puede clasificar como 7 en logistica se coloca el treshold con 0.5 por ejemplo entonces estaria dos entradas una para 1 y otra para 7 pero con solve math tenemos una ponderacion de esto. hace como una normalizacion agarrando el maximo
lab 3 comparar red de ese lab con una cnn una cnn con mlp:
recordando parametros? capa 1 eran pixeles 784 y las egunda capa, supongamos 784 neuronas y tenemos 128 neuronas las fully conection newtorks conectaran entradas con neuronas entonces cuantos pesos tengo? 784 * 128 es decir para mlp tiene un montΓ³n de parametros, la idea con cnn es que con una fraccion de parametros tener el mismo rendimiento, es decir una fraccion por ejemplo 255 parametros
ahora graficar matriz confusion multi algo? entonces el clasificador era perfecto? con esto se ve, por ejemplo esperar errores en 7-1 0-8, etc porque son numeros que se parecen entre ellos, entonces hay que graficar esta matriz de confusion , hay que concentrarse en los erroes, y decir porque? es decir intentar con intuicion porque se confunde.
Clase 25082025ΒΆ
Redes Neuronales recuerrentesΒΆ
Se usan en datos equenciales como fotogramas, palabras o lenguaje y sobre todo en series de tiempo. Son la base para que se usen los transformadores y LLMs.
La deficiencia de los MLPs es que cada punto y observaciones es independiente una de la otra. Pero cuando hay dependencias en un tiempo.
RNNΒΆ
Fit forward netwoarl networks. Son el tipo de redes que la data entra , va en una direccion y sale. En cambio las RNN no cuentan como ese tipo , porque es de que los outputs de la neurona se vuelven los inputs de la misma.
El feedback loop, es como vamos a tratar el outuput como el input.
Clase 0109ΒΆ
REPASOΒΆ
Viene
- Una de calculo
- Un caso
- Preguntas Cerradas
- Preguntas Abiertas
Muchas de las preguntas son laboratorios
Tema 1 PerceptronΒΆ
El perceptron es un modelo de mln el problema es que resuelve problemas muy lineales.
Por eso se propuso el modelo multicapa. Lo interesante lo de las redes neuronales es lo que estamos haciendo es conectando un pereceptron uno detras de otro. Todas las neuronas de una capa estan conectadas con las de la siguiente capa.
El mecanismo de la red funciona de 2 formas, iniciamos de manera aleatoria y luego hacemos un paso de informacion o funcion de perdida para ver que tan bien o mal estan nuestros parametros.
Mi y diagnistico y mi y deben de ser parecidos.
Quremos simular el XOR con los pesos y bayases, el problema es que tenemos un mundo real generando procesos, y queremos con redes o con perceptrones simular el proceso natural. Queremos encontrar un modelo que me genere los mismos resultados que un proceso natural. Por eso vemos con nuestra funcion de perdida que tan lejos se acercan los valores y corregir los valores aleatorios.
Por simplicidad usamos simobide como funcion de activacion. Que lo que hace es aplicar no linealidad. Quiere decir que se va a encender o no se va a encender. Si aplicamos simboide como en este ejemplo
Por eso mismo podemos reescribir los valores de z3 con valores de a2 , w5 y w6 y b3 ya que los outputs de la anterior es los inputs de la siguiente
Pero para saber si esta bueno o malo usamos la funcion siguiente
Mi rango de numeros va entre 0 y 1. Lo que quiero medir es que los que esten cerca del 0 o cerca del 1 esten muy cerca de ellos osea como que los ponga a la apar. Por eso se usan logaritimica. Esto lo que hace es penalizar o apoyar a los extremos sobre los puntos medios.
Por eso se usa el BinaryCross Enthropy.
Lo que se usa en logaritmo es para saber que tan cerca es para las respuestas que yo hago.
SI la aplicamos nos daria algo asi
No hay tanto error, la funcion de perdida que utilicemos nos va a cambiar. Aqui no cambiara tanto los parametros en la siguiente vuelta, esto depende del dominio mucho.
Su funcion de actualizacion es desenso gradiente, este nos dice que el peso actual es el peso actual es el learning rate o el valor del parametro.
El gradiente de una funcion es una direccion de maximo cambio.
EL gradiente es la direccion en donde hay un cambio a un cero absoluto osea una solucion. La funcion de perdida la pdoemos pensar como un plano de n dimensiones y me calcula cuanta perdida tenemos en esos parametros. El gradiente es cuando estamos en una posicion y es el punto con mayor inclinacion, por eso sirve para encontrar ceros , porque lo que nos ayuda es llevarnos al mayor cambio que siempre convergen en soluciones. Por eso se miden con mejoras en esto.
Es vector el gradiente en cuanto cambio debo hacer en cada parametro para estar apuntando al punto de mayor inclinacion hacia el minimo.
El gradiente es la direccion, pero si damos todo el paso del gradiente, si lo tomas todo puede llegar a suceder que llegues a un punto que no es maximo o minimo. Ojo aqui en estos problemas tratamos de minimizar no maximizar.
Yo otengo que tratar de hacer s meter mi error en terminos de otras variables porque son mi input el output de la anterior.
Entonces resolvamos el gradiente para w5 el nuevo valor que va a tener.
Reuerda que la derivada de la funcion simboide es
Si es negativa, esto quiere decir es para que alcance un maimo en mi funcion debo disminuir mi valor.
Ahora ya calculamos el w_5 correcto
OptimizadoresΒΆ
El descenso gradiente tiene un problema es que no es tan suave el camino, y si decide que le siguiente esta en otra direccion mete ruido a su aprendizaje. Quiere decir
El descenso gradiente es lo que hace es algo asi.
Por eso hay mucha volatilidad en cambios de sistema.
El primer concepto es momentum, el momentum lo qrimero que metemos es un tema de recursividad,
Mira la ecuacion
Lo que me dice es que en el paso anterior voy a tomarlo en cuenta, es algo parecido a inercia. La idea es que mientras mas cambios le pongo a la misma direccion mas me va a costar el ruido al modelo basco. Por eso mira el cambio que hizo anteriormente.
El siguiente concepto es ADAGRAD,
Si yo introduczco un vector abajo, lo que yo estoy haciendo es convirtiendo el learning rate el vector. Por eso voy a tener un vector que me diga que para ese vector el learning rate es ese. Por eso mientras mas peque;o el denomiador mas peque;os son mism pasos para mantener estabilidad
Ahorita introdujimos tener un vector de learning rates para parametros.
Adam junta el momentum y especializacion de llearning rate. Osea un tipo de promedio exponencial
El primer termino que ves ahi
Mientras mas lejos vaya yo , menos me importara el de atras, osea tendre gradientes historicos. El 0.9 es el hiperparametro para que no decrezca tanto.
RNNΒΆ
Las arquitecturas son informaciones que no podemos asumir independecia de variables. Hay tipos de datos que nos da informacion el contexto como los trazos de los numeros. El hecho de que este pixel este de un color en especifico aumenta la probabilida dque algunos de al rededor este coloreado. El hecho de informacion en contexto no se usa independencia
Las CNN tomaban en cuenta los datos informacion local espacial, como describir una matriz.
Las secuenciales es que el orden de los datos nos da informacion, osea que
El orden me dio informacion , osea que si contiene informacion respecto al proceso que intento simular. Osea que asumo independencia.
En mlps no pongo el orden o secuencia de los datos , es por eso que se propone algo asi.
Las fit forward netwalr networks. Tiene la caracteristicas de las RNN que no son asi porque tiene un looop
Nos deja con el feedback loop regresar la informacion d esalida como entrada.
Para evitar que se quede enloopado , le asignamos una ventana, osea una observacion del pesado o n observaciones del pasado y es un hiperparametro .
Ves que los pesos de las obervaciones anteriores influyen en las siguientes.
El problema es que el w4 crece de manera exponencial . Osea en algun momento w4 crece demasiado.
Osea
Vanishing gradiente problemΒΆ
Osea que se vuelven demasiado peque;os y la red olvida dependencias lejanas debido a los pesos. La ultima observacion la observacin de 10 periodos para atras osea que la red perdio dependencias a largo plazo, osea solo puede tener problemas a corto plazo.
Exploding gradiente problem.ΒΆ
El otuput de combiaciones lineal es de w1 y w4 podria tender al mayor . Los pesos crecen de manera deshorbitada, la red comienza a cambiar valores de manera muy drasticamente.
Sucede cuando le doy mucha ventana a mi red recurrente.
Se deshestabilizan y dejan de aprender.
Fin de repaso
Clase 29092025ΒΆ
Aqui esta la resolucion del 8
LSTMΒΆ
Los datos que hace son datos secuenciales. El lenguaje tambien lo puede analizar. Como funciona la RNN son la base por los problemas del gradiente construimos las lstm y luego transformadores y luego LLMS.
La idea principal es problema del gradiente.
El problema del gradiente que desparezca y explotara es la capacidad de memoria de la red.
Esto se traduce que no pueden calcular informacion a largo plazo. No puedo calcular el grado de importancia crecio exponencialmente o exploto. La red neurona l pierda e la importancia.
Queremos crear arquitectura que le meta memoria.
Lo que haremos es meterle complejidad a las compuertas. Osea le meto un poco mas de complejidad la compleja de enmedio ponderando como nuevas experiencias alteran nuestra experiencia base.
EL estado de la celda es nuestramemoria a largo plazo, pasa la informacion de un evento al siguiente
Tenemos 3 partes de calculos que utilizan el estado de la celda.
El forget gate. Divide el impacto de las iteraciones cuanto tengo que olvidar segun la informacion que estoy viendo. Lo que estamos haciendo es cambiando comportamiendo segun eventos recientes.
La funcion del forget gate le dice que % mantener y desechar. Osea con un 0.8 conservar el 80%.
La segunda partes es el input gate es crear un nuevo candidato para una nueva memoria. Lo unico que hacemos es cambiar la memoria. Osea como afecta la memoria a largo plazo.
El output gate. Es ver utilizar memoria a largo , corto plazo y memoria actual para tomar una desicion. Y se vuelve de corto plazo y output de la memoria.
Si se dan cuenta lo que estoy haciendo es agregarle las condiciones. Estoy ponderando mi memoria en cada paso. Entonces mitigo el crecimiendo exponencial.No hay ningun parametro si creo ventanas infinitas se crea un problema del gradiente que desvanece o explota.
Un LSTM funciona en miles de observaciones en el futuro , crece el futuro que podemos predecir
PROS VS CONTRAAΒΆ
- Pors manejan efectivo de dependencias largas en secuencias
- Reduce el probleam de desvanecimiento.
Lo que hacen estos modelos es predecir cuanto la gente va a querer la cantidad de energia en el dia y ordenar un cronograma.
Ayuda a mantener la red saludable. En las horas no pico calcuraremos la cantidad en la siguiente hora. Calculamos cada hora que va a suceder. En horas pico calculamos cada 15 minutos.
Un modelo que encuentra patrones temporales nos ayuda a hacer este tipo de analisis.
Entonces como los asistentes de voz reciben instrucciones precisas y cortas usan los LSTM.
Se pierde en tareas mucho mas complejas a diferencia que un LLMs. Es por el motivo que salieron los transformadores.